package com.example.jsoup.kuang.project;

import com.alibaba.fastjson.JSONObject;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class AllNeedPageDetailDataListUtil {

    // main 函数 测试
    public static void main(String[] args) throws Exception {
        // 问题库 返回 List 类型测试
//        List<Map<String, String>> listJson = AllNeedPageDetailDataListUtil.getPageDetailListReturnList(1, 1);
//        String strJson = JSONObject.toJSON(listJson).toString(); // List 数据类型 转为 json 方便打印展示并查看
//        System.out.println("\n返回 List 类型的页面列表详细数据：：：：\n" + strJson);

        // 项目库 返回 List 类型测试
//        List<Map<String, String>> listJson = AllNeedPageDetailDataListUtil.getProjectPageDetailListReturnList(2);
//        String strJson = JSONObject.toJSON(listJson).toString(); // List 数据类型 转为 json 方便打印展示并查看
//        System.out.println("\n返回 List 类型的页面列表详细数据：：：：\n" + strJson);

        // 问题库 返回 json 字符串数据测试
//        String strJson = AllNeedPageDetailDataListUtil.getPageDetailListReturnString(1, 115);
//        System.out.println("\n返回 String 类型的页面列表详细数据：：：：\n" + strJson);

        // 项目库 返回 json 字符串数据测试
        String strJson = AllNeedPageDetailDataListUtil.getProjectPageDetailListReturnString(5100);
        System.out.println("\n返回 String 类型的页面列表详细数据：：：：\n" + strJson);


        ////////////////////// 项目库 循环获取每一页详细数据 返回 json 格式数据 ///////////////////////////////////////
//        List<String> strList = new ArrayList<>();
//
//        // 项目库 循环获取测试
//        for (int i = 1000; i < 1001; i++) {
//            String str = AllNeedPageDetailDataListUtil.getProjectPageDetailListReturnString(i);
//            System.out.println("\n返回 String 类型的页面列表详细数据：：：：第 " + i + " 页\n" + str);
//            System.out.println();
//            System.out.println();
//            strList.add(str);
//        }
//
//        // List 转 json  List转json
//        JSONArray jsonList = JSONArray.parseArray(strList.toString());
//
//        System.out.println("\n大数据json返回：：：：\n");
//        System.out.println(jsonList);
        //////////////////////////////////////////////////////////////////


    }


    /**
     * 爬取列表的每一页详细数据
     *
     * @param demand_type 【---人才需求 demand_type=1---】、【---技术需求 demand_type=2---】、【---服务需求 demand_type=3---】
     * @param pageIndex   【---页码 从 1 开始，需要循环递增 1，来获取下一页的数据---】
     * @return 返回 Json 格式的 详情页数据 列表 字符串 返回 15 条数据
     * @throws Exception
     */
    public static String getPageDetailListReturnString(int demand_type, int pageIndex) throws Exception {

        List<Map<String, String>> pageDetailDataList = new ArrayList<>();

        // 包含 id 和 url 的 Map 类型的 List 列表
//        List<Map<String, String>> idAndUrlList = NeedListUtil.getNeedListReturnMapList(3, 1);
        List<Map<String, String>> idAndUrlList = NeedListUtil.getNeedListReturnMapList(demand_type, pageIndex);

        if (demand_type == 1) { /////////// 人才需求  ///////////

            for (Map<String, String> idAndUrl : idAndUrlList) {
                // 这里返回的就是每页的详细数据
                Map<String, String> needDetail = NeedPageDataUtil.getTalentNeedDetail(idAndUrl);
                pageDetailDataList.add(needDetail);
            }

        } else if (demand_type == 2) {  //////////// 技术需求  ///////////

            for (Map<String, String> idAndUrl : idAndUrlList) {
                // 这里返回的就是每页的详细数据
                Map<String, String> needDetail = NeedPageDataUtil.getTechnologyAndServiceNeedDetail(idAndUrl, 1);
                pageDetailDataList.add(needDetail);
            }

        } else if (demand_type == 3) { //////////// 服务需求  ///////////

            for (Map<String, String> idAndUrl : idAndUrlList) {
                // 这里返回的就是每页的详细数据
                Map<String, String> needDetail = NeedPageDataUtil.getTechnologyAndServiceNeedDetail(idAndUrl, 2);
                pageDetailDataList.add(needDetail);
            }
        }

        return JSONObject.toJSON(pageDetailDataList).toString();
    }

    /**
     * 爬取列表的每一页详细数据
     *
     * @param demand_type 【---人才需求 demand_type=1---】、【---技术需求 demand_type=2---】、【---服务需求 demand_type=3---】
     * @param pageIndex   【---页码 从 1 开始，需要循环递增1传入该值，获取下一页的数据---】
     * @return 返回 List 格式的 详情页数据 列表 数据
     * @throws Exception
     */
    public static List<Map<String, String>> getPageDetailListReturnList(int demand_type, int pageIndex) throws Exception {

        List<Map<String, String>> pageDetailDataList = new ArrayList<>();

        // 包含 id 和 url 的 Map 类型的 List 列表
//        List<Map<String, String>> idAndUrlList = NeedListUtil.getNeedListReturnMapList(3, 1);
        List<Map<String, String>> idAndUrlList = NeedListUtil.getNeedListReturnMapList(demand_type, pageIndex);

        if (demand_type == 1) { /////////// 人才需求  ///////////

            for (Map<String, String> idAndUrl : idAndUrlList) {
                // 这里返回的就是每页的详细数据
                Map<String, String> needDetail = NeedPageDataUtil.getTalentNeedDetail(idAndUrl);
                pageDetailDataList.add(needDetail);
            }

        } else if (demand_type == 2) {  //////////// 技术需求  ///////////

            for (Map<String, String> idAndUrl : idAndUrlList) {
                // 这里返回的就是每页的详细数据
                Map<String, String> needDetail = NeedPageDataUtil.getTechnologyAndServiceNeedDetail(idAndUrl, 1);
                pageDetailDataList.add(needDetail);
            }

        } else if (demand_type == 3) { //////////// 服务需求  ///////////

            for (Map<String, String> idAndUrl : idAndUrlList) {
                // 这里返回的就是每页的详细数据
                Map<String, String> needDetail = NeedPageDataUtil.getTechnologyAndServiceNeedDetail(idAndUrl, 2);
                pageDetailDataList.add(needDetail);
            }
        }

        return pageDetailDataList;
    }


    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////


    /**
     * 项目库 爬取的页面数据 列表 返回
     *
     * @param pageIndex
     * @return 返回 String 类型
     */
    public static String getProjectPageDetailListReturnString(int pageIndex) throws Exception {

        List<Map<String, String>> pageDetailDataList = new ArrayList<>();

        // 包含 id 和 url 和 cover 的 Map 类型的 List 列表
        List<Map<String, String>> idAndUrlAndCoverList = NeedListUtil.getProjectListReturnMapList(pageIndex);


        for (Map<String, String> idAndUrlAndCover : idAndUrlAndCoverList) {
            // 这里返回的就是每页的详细数据
            Map<String, String> needDetail = NeedPageDataUtil.getProjectDetail(idAndUrlAndCover);
            pageDetailDataList.add(needDetail);
        }

        return JSONObject.toJSON(pageDetailDataList).toString();
    }


    /**
     * 项目库 爬取的页面数据 列表 返回
     *
     * @param pageIndex
     * @return 返回 List 类型
     */
    public static List<Map<String, String>> getProjectPageDetailListReturnList(int pageIndex) throws Exception {

        List<Map<String, String>> pageDetailDataList = new ArrayList<>();

        // 包含 id 和 url 和 cover 的 Map 类型的 List 列表
        List<Map<String, String>> idAndUrlAndCoverList = NeedListUtil.getProjectListReturnMapList(pageIndex);


        for (Map<String, String> idAndUrlAndCover : idAndUrlAndCoverList) {
            // 这里返回的就是每页的详细数据
            Map<String, String> needDetail = NeedPageDataUtil.getProjectDetail(idAndUrlAndCover);
            pageDetailDataList.add(needDetail);
        }

        return pageDetailDataList;
    }

}
